// 窗口简单缓动
package main

import (
	"runtime"
	"time"

	app "gitee.com/go_888/xcgui/xcgui/app"
	ease "gitee.com/go_888/xcgui/xcgui/ease"
	window "gitee.com/go_888/xcgui/xcgui/window"
	xcc "gitee.com/go_888/xcgui/xcgui/xcc"
)

var (
	a *app.X结构_全局API
	w *window.Window
)

func main() {
	// 这是必要的, 这将保证main函数中对UI库命令的调用是在一个系统线程中执行的。
	// 如果不在一个系统线程中执行, 那程序有很大概率卡死.
	// 因为下面用了time.Sleep(), go的运行时可能会进行调度, 就跳到其他线程了, 所以必须用这个.
	runtime.LockOSThread()
	defer runtime.UnlockOSThread()

	a = app.X创建(true)
	a.X启用自动DPI(true).X启用DPI(true)
	a.X设置绘制频率(10)

	w = window.X创建窗口(0, 0, 400, 300, "窗口简单缓动", 0, xcc.X窗口样式_默认样式)
	w.X显示(true)

	rc := w.GetRectDPI()
	for t := 0; t <= 30; t++ {
		v := ease.X缓动弹跳(float32(t)/30.0, xcc.X缓动类型_快到慢)
		y := int32(v * float32(rc.X上))
		w.X移动窗口(rc.X左, y)
		w.X重绘(true)
		time.Sleep(time.Millisecond * 10)
	}

	a.X运行()
	a.X退出()
}
